package com.sright.bcard.enterprise.biz.manager;

import com.sright.bcard.common.service.share.dto.enterprise.AllAvatarDTO;
import com.sright.bcard.common.service.share.dto.enterprise.AllMaterialDTO;
import com.sright.bcard.common.service.share.dto.page.BetweenDateParamRequest;
import com.sright.bcard.common.service.share.dto.page.PageDTO;
import com.sright.bcard.common.service.share.dto.page.PageParamRequest;
import com.sright.bcard.common.service.share.dto.pager.Pager;
import com.sright.bcard.common.service.share.dto.enterprise.MaterialDTO;
import com.sright.bcard.content.dal.entity.MaterialDO;
import com.sright.bcard.enterprise.share.response.MaterialResponse;

import java.util.List;

public interface MaterialManager {

    /**
     * 新增素材
     */
    Long addMaterial(MaterialDTO materialDTO);

    /**
     * 素材列表
     */
    List<MaterialDO> list(MaterialDTO materialDTO);

    /**
     * 编辑素材
     */
    Integer editMaterial(MaterialDTO materialDTO);

    /**
     * 删除素材
     */
    Integer deleteMaterial(Long id);

    /**
     * 个人素材列表
     * @return
     */
    List<MaterialDTO> personalMaterialList(MaterialDTO materialDTO);

    /**
     * 添加个人素材
     * @param materialDTO
     * @return
     */
    Long addPersonalMaterial(MaterialDTO materialDTO);

    /**
     * 编辑个人素材
     * @return
     */
    Boolean editPersonalMaterial(List<Long> ids,Long userId);

    /**
     * 删除个人素材
     * @param ids
     * @return
     */
    Integer deletePersonalMaterial(List<Long> ids);

    /**
     * 总后台分页查询素材列表
     * @param materialType
     * @param betweenDateParamRequest
     * @param request
     * @param needReview
     * @return
     */
    Pager<AllMaterialDTO> pageList(Integer materialType,
                                   BetweenDateParamRequest betweenDateParamRequest,
                                   PageParamRequest request, Integer needReview);

    /**
     * 分页查询素材列表
     * @param materialDTO
     * @return
     */
    PageDTO<MaterialResponse> page(MaterialDTO materialDTO);

    Pager<AllAvatarDTO> avatarList(PageParamRequest paramRequest, Integer needReview);

    void deleteAvatar(Long id);
}
